package aOrganizar;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;



public class Busqueda {
	private CriterioDeOrdenamiento criterioDeOrdenamiento;
	private String destino;
	private String origen;
	private Date fecha;
	private Set<ItinerarioFilter> filtros;
	private Integer cantEscalas;
	
	
	//Constructor
	
	public Busqueda(String destino, String origen, Date fecha,
			Integer cantEscalas) {
		super();
		this.destino = destino;
		this.origen = origen;
		this.fecha = fecha;
		this.cantEscalas = cantEscalas;
	}
	
	public Busqueda(){
		super();
	}

	

	// Getters & Setters.

	public String getDestino() {
		return destino;
	}

	public void setDestino(String destino) {
		this.destino = destino;
	}

	public String getOrigen() {
		return origen;
	}

	public void setOrigen(String origen) {
		this.origen = origen;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	

	public Integer getCantEscalas() {
		return cantEscalas;
	}

	public void setCantEscalas(Integer cantEscalas) {
		this.cantEscalas = cantEscalas;
	}

	/**
	 * Filtra los itinerarios.
	 * 
	 * @param itinerarios
	 * @return
	 */
	public Collection<Itinerario> filtra(Collection<Itinerario> itinerarios) {

		if (filtros.size() == 0 || filtros == null)
			return itinerarios;

		for (ItinerarioFilter filtro : filtros) {
			itinerarios = filtro.filtrar(itinerarios);
		}

		return itinerarios;

	}

	public List<Itinerario> ordenar(Collection<Itinerario> itinerarios) {
		
		return criterioDeOrdenamiento.ordena(itinerarios);
	}

}
